﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

//3) Составить класс для определения одномерных массивов целых чисел(векторов). Предусмотреть
//    возможность обращения к отдельному элементу массива с контролем выхода за пределы массива, возможность
//    задания произвольных границ индексов при создании объекта, и выполнения операций поэлементного 
//    сложения и вычитания массивов одинаковой длинны.


namespace _24_01_17_Third_task
{
    class Program
    {
        static void Main(string[] args)
        {
            RangeArray ra = new RangeArray(-5,5);
            Console.WriteLine("Length of array:" + ra.Length);
            for (int i = -5; i <= 5; i++)
                ra[i] = i;
            Console.WriteLine("array:");
            for (int i = -5; i <= 5; i++)
                Console.Write(ra[i]+" ");
            Console.WriteLine("\n");
           // Console.Write(ra[6] + " ");

            RangeArray ra1 = new RangeArray(0, 11);
            Console.WriteLine("length of array:" + ra1.Length);
            for (int i = 0; i <= 11; i++)
                ra[i] = i;
            Console.WriteLine("array:");
            for (int i = 0; i <= 11; i++)
                Console.Write(ra[i] + " ");
            Console.WriteLine("\n");
           // Console.Write(ra[6] + " ");

            RangeArray.SumOfArray(int[] ra, int[] ra1);



        }
    }
    class RangeArray
    {
        int[] a;
        
        int lowerLimit;
        int upperLimit;

        public int Length { get; private set; }
        public bool Error { get; private set; }

        public RangeArray(int low, int high)
        {
            high++;
            if (high <= low)
            {
                Console.WriteLine("Wrong indexes");
                high = 1;
                low = 0;
            }
            a = new int[high - low];
            Length = high - low;

            lowerLimit = low;
            upperLimit = --high;
        }

            public int this[int index]
        {
            get
            {
                if (ok(index))
                {
                    Error = false;
                    return a[index - lowerLimit];
                }
                else
                {
                    Error = true;
                    return -1;
                }

            }
            set
            {
                if (ok(index))
                {
                    a[index - lowerLimit] = value;
                    Error = false;
                }
                else
                {
                    Error = true;

                }
            }


        }
        private bool ok(int index)
        {
            if (index >= lowerLimit & index <= upperLimit)
                return true;
            else
            {
                Console.WriteLine("Wrong index");
                return false;
            }
           
        }
        public static void SumOfArray(int[] arr1, int[] arr2)
        {
            int[] sumArray = new int[arr1.Length];
            if (arr1.Length == arr2.Length)
            {
                for (int i = 0; i <= arr1.Length; i++)
                {

                    sumArray[i] = arr1[i] + arr2[i];
                }
                Console.WriteLine("sum of array:");
                for (int i = 0; i <= sumArray.Length; i++)
                    Console.Write(sumArray[i] + " ");
                Console.WriteLine("\n");
            }
            else Console.WriteLine("arrays can't summarise");



        }
    }

 }
